/*
 * Time.h
 *
 *  Created on: 2014年2月27日
 *      Author: Administrator
 */

#ifndef TIME_H_
#define TIME_H_
#include <iostream>
/** @brief 这是一个简单的Time 类.
 * 包括私有成员变量,hours 和minutes.
 * 用于展示操作符重载的相关细节.
 *
 * */
class Time {
private:
	int hours;
	int minutes;
public:
	Time();
	Time(int h,int m=0);
	virtual ~Time();
	void AddMin(int m);
	void AddHr(int h);
    void Reset(int h=0,int m=0);///< 重新复位时间值
    Time Sum(const Time & t)const;///< 实现时间的相加
    Time operator+ (const Time &t)const;///< 成员函数 加法操作符重载
    Time operator- (const Time &t)const;///< 成员函数  减法操作符重载
    Time operator* (double mult)const;///< 成员函数  乘法操作符重载
    /**
     * @brief 友元函数
     * ### 在类中声明时加上关键字 friend,但是它不是成员函数 ###
     * ### 因此不能使用成员操作符，定义友元函数时，不需要在其前面 ###
     * ### 加关键字friend. ###
     * ### 友元函数不是成员函数，但是它可以捅有成员函数相同的访问权限 ###
     */
    friend Time operator* (double mult, const Time &t);/// 友元函数
    /**
     * 友元函数 重载操作符 <<
     *
     *
     */
    friend std::ostream & operator <<(std::ostream &os ,const Time &t);/// 重载 <<操作符
    void Show()const;
};

#endif /* TIME_H_ */
